/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package GenerateDB;

/**
 *
 * @author escabia
 */
public class Columna {
    private String atributo;
    private boolean multivaluado;
    private boolean derivado;
    private String tipo;
    private int prec;
    private int escala;
    boolean notnull;
                
    /**
     * Constructo columna
     * @param c 
     */
    public Columna(Columna c){
        this.atributo = c.atributo+"";
        if(c.multivaluado == true)
            this.multivaluado = true;
        else
            this.multivaluado = false;
        
        if(c.derivado == true)
            this.derivado = true;
        else
            this.derivado = false;
        
        this.tipo = c.tipo+"";
        this.prec = c.prec+0;
        this.escala = c.escala+0;
        
        if(c.notnull == true)
            this.notnull = true;
        else
            this.notnull = false;
                   
    }
    
    /**
     * Constructor columna
     * @param atributo nombre de la columna
     * @param multivaluado registra si es multivaluado
     * @param derivado registra si es derivado
     * @param tipo registra el tipo
     * @param prec registra la precisión
     * @param escala registra la escala
     * @param notnull  registra si es notnull
     */
    public Columna(String atributo, int multivaluado, int derivado, String tipo, int prec, int escala, int notnull) {
        this.atributo = atributo;
        if(multivaluado == 1)
            this.multivaluado = true;
        else
            this.multivaluado = false;
        
        if(derivado == 1)
            this.derivado = true;
        else
            this.derivado = false;
        this.tipo = tipo;
        this.prec = prec;
        this.escala = escala;
        
        if(notnull == 1)
            this.notnull = true;
        else
            this.notnull = false;
    }
    
    /**
     * 
     * @return 
     */
    public String getAtributo(){
        return atributo;
    }
    
    /**
     * 
     * @param nombre 
     */
    public void setAtributo(String atributo){
        this.atributo = atributo;
    }
    
    /**
     * 
     * @return 
     */
    public boolean getMultievaluado(){
        return multivaluado;
    }
    
    /**
     * 
     * @param multievaluado 
     */
    public void setMultievaluado(boolean multivaluado){
        this.multivaluado = multivaluado;
    }
    
    public boolean getDerivado(){
        return derivado;
    }
    
    public void setDerivado(boolean derivado){
        this.derivado = derivado;
    }
    
    /**
     * 
     * @return 
     */
    public String getTipo(){
        return tipo;
    }
    
    public void setTipo(String tipo){
        this.tipo = tipo;
    }
    
    public int getPrec(){
        return prec;
    }
    
    public void setPrec(int prec){
        this.prec = prec;
    }
    
    public int getEscala(){
        return escala;
    }
    
    public void setEscala(int escala){
        this.escala = escala;
    }
    
    public boolean getNotnull(){
        return notnull;
    }
    
    public void setNotnull(boolean notnull){
        this.notnull = notnull;
    }
    
    public String toSQL(){
        String sql = null;
        sql = "     " + this.atributo + " " +this.tipo;   
       
        if(this.prec > 0){
            sql += "("+this.prec;
            if(this.escala > 0){
                sql += ","+this.escala;
            }
            sql += ")";

        }
        
        if(this.notnull)
            sql += " NOT NULL";
        return sql+",";
    }
}
